home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Speech Synthesis Manager / Installer Source / InstallerTypes.r < prev    next >
Encoding:
Text File  |  1996-11-11  |  42.3 KB  |  1,194 lines  |  [TEXT/MPS ]

  1. /*
  2.     LEGALESE:    © 1988-1993 Apple Computer, Inc.  All Rights Reserved
  3.     
  4.     PROJECT:    Installer 4.0
  5.     
  6.     PROGRAM:    Installer
  7.     
  8.     AUTHORS:    Bruce Jones, Cindy Frost, Bobby Carp, Kevin Aitken, Afshin Jalalian
  9.     
  10.     PURPOSE:    This file contains all the resource templates necessary to
  11.                 create installer scripts.
  12.  
  13.     CHANGE HISTORY (most recent first):
  14.  
  15.         <55>      7/8/94    KBA        I left out the line continuation character in the new 'inff'
  16.                                     flags define.
  17.         <54>      7/7/94    KBA        Added new flag to format version 2 of the 'inff' to allow the
  18.                                     FOND to be encoded in a resource of another type.
  19.         <53>     5/11/94    KBA        We were using the macro 'fileSpecFlags' in the 'intf' instead of
  20.                                     the macro 'targetFileSpecFlags'.
  21.         <52>      5/6/94    KBA        Added new version of 'intf' to support setting the proper
  22.                                     creation date, modification date and Finder Flags.
  23.         <51>    12/30/93    rdm        Changed project name to Installer 4.0.
  24.         <50>    12/21/93    KBA        Added CheckGestaltAttributes rule clause and cleaned up types.
  25.         <49>    11/19/93    KBA        Added kAllowServerAsTarget flags to 'inpr'. It's either we say
  26.                                     it's an unsupported feature, or continue telling developers how
  27.                                     to patch the Installer, which is probably far worse.
  28.         <48>    11/18/93    KBA        Fixed bug in the new 'inr#' definition.
  29.         <47>    11/16/93    KBA        Updated the 'inpr' resource and added the 'inr#'.
  30.         <46>    10/27/93    KBA        Added definition of the 'insz' resource, that describes the
  31.                                     required size of the script's sub-heap.
  32.         <45>    10/21/93    KBA        Added new comment resource definition ('inpc'), because the old
  33.                                     one doesn't have a version field.
  34.         <44>     9/14/93    KBA        Added format 1 of 'indo' resource to handle specifying the
  35.                                     suggested source disk type. Also added dontIgnoreLockedFile flag
  36.                                     to 'infa' format 1.
  37.         <43>     8/31/93    KBA        Added template for folder atom ('infm') resource. Deleted old
  38.                                     flag names.
  39.         <42>     8/10/93    KBA        Removed the creation date field from the 'intf' resources
  40.                                     definition. Added format 3 Action Atom and new 'inrf' definition
  41.                                     for Rule Function code resource.
  42.         <41>     7/20/93    AJ        Fixed history mess up.
  43.         <40>     7/20/93    AJ        Removed AttachStatus feature. 
  44.         <39>      7/12/93     KBA     Changed srcMustExist to srcNeedExist in file atom. 
  45.         <38>      7/6/93     KBA        Eliminated flags in the preference resource that reference
  46.                                     features that may not exist. Added defines for framework IDs.
  47.         <37>     3/26/93     KBA     Added 'invc' (version compare) script resource,
  48.                                     and changed how we connect to the version compare code resouce
  49.                                     in File Atoms and Rsrsc Atoms.
  50.         <36>     3/25/93    KBA        Added 'inah' resource for external Installer debuggers (Action
  51.                                     Handlers).
  52.         <35>     3/19/93    KBA        Added new resMerge atom script resource definition ('inrm').
  53.         <34>     3/15/93    KBA        Modified 'infa' and 'inra' to add fields for src version info.
  54.                                     Added a FinderFlags field and two flags (compareUsingVersion and
  55.                                     fileIsLocked) to 'infa'.  Added leaveAloneIfNewer flag to
  56.                                     'inra'.
  57.         <33>     2/23/93    KBA        Eliminated 'key' from the name of rule clauses AddCustomItems
  58.                                     and AttachStatusToCustomItem.
  59.         <32>     2/15/93    AJ        Added support for custom framework.
  60.         <31>     1/28/93    KBA        Added new versions of 'infa, 'inra', and 'inff's. Small changes
  61.                                     to preference resource.
  62.         <30>     12/1/92    KBA        Added preference resource 'inpr' definition.
  63.         <29>    10/28/92    KBA        Adding Atom Extender ('inex') definition.
  64.         <28>     6/16/91    KBA        Add defines for resource attributes.  Removed 2nd version of
  65.         <27>     5/14/91    KBA        Added flag to Format1 for stopping cursors during action atom.
  66.                                     Created 2nd version inra with split resource info.
  67.         <26>     4/18/91    KBA        Moved to new project InstallerTypes. Added 'inff' template for
  68.                                     installing split font resources.
  69.         <25>     1/15/91    BAC        Changing project to Installer 3.2.
  70.         <24>     1/10/91    BAC        Adding the type definition for the 'invs' required Installer
  71.                                     application version resource.
  72.         <22>     12/6/90    BAC        Changing 'alwaysCopy' (opposite of updateOnly) to something that
  73.                                     doesn't semantically conflict with keepExisting.
  74.         <21>     12/5/90    BKJ        Clean up capitalization as per Jon Zap's request.
  75.         <20>    11/27/90    BKJ        Let scriptwriters have control of when an installation requires
  76.                                     a restart. This means adding the dontForceRestart/forceRestart
  77.                                     flag to packages.
  78.         <19>     11/2/90    BAC        We need to define REGION for people who are using pre-7.0
  79.                                     interfaces.
  80.         <18>     11/2/90    BKJ        Fix typos
  81.         <17>      9/3/90    BAC        Added the LONGINT refCon field to the 'inaa' and
  82.                                     checkUserFunction definitions.
  83.         <15>      8/1/90    BKJ        Fixing bug in indo resource template
  84.         <14>     7/28/90    BKJ        Add AlwaysTrue key resource type
  85.                  7/13/90    BKJ        Fixing Format for the Facist Nazi Header stuff
  86.                  4/27/90    BKJ        Cleaned up for Developer's Conference release.  Removed all old
  87.                                     Default Maps stuff.
  88.                   4/5/90    BKJ        Added 3 new clause types - reportError, addAuditRecord, checkAuditRecord
  89.                  2/14/90    BKJ        Added 'indo' template for ordering disks.  (Happy Valentine's Day)
  90.                  12/2/89    BKJ        Changed format1 default maps to rules & default maps
  91.                                     groups to rule frameworks
  92.                  9/12/89    BKJ        Made major changes for support of format1 default maps
  93.                  9/12/89    BKJ        Changed 'indg' to support a list of IDs rather than a range
  94.                  9/12/89    CIF        Added types for Installer action atoms
  95.                  9/11/89    BKJ        Added types for default map groups
  96.                  9/11/89    BKJ        Forked off of 6.0.4 final
  97.                  7/25/89    BKJ        Added support for international keyboards
  98.                  2/17/89            ALPHA 7 Release
  99.                  1/12/89            ALPHA 6 Release
  100.                 12/19/88            ALPHA 5
  101.                  5/26/88    CIF        Created
  102.                  9/14/88            ALPHA 2 Release
  103. */
  104.  
  105.  
  106. #include "SysTypes.r"                                    /* For region codes */
  107.  
  108. /* For those using pre-7.0 "SysTypes.r" we need to define region.  It used */
  109. /* to be country, but became region in 7.0 */
  110.  
  111. #ifndef region
  112. #define region country
  113. #endif
  114.  
  115.  
  116. /*----------------------------Installer 3.0 Scripts-----------------------------------*/
  117.  
  118. #define evenPaddedString                                                                                        \
  119.     pstring;                                                                                                    \
  120.     align word
  121.  
  122.  
  123. #define OSType                                                                                                    \
  124.     literal longint
  125.     
  126.     
  127. #define rsrcType                                                                                                \
  128.     OSType                                                /* type of a rsrc which must exist in system */            \
  129.         patchrsrcType = 'PTCH',                                                                                    \
  130.         userFunctionType = 'infn',                                                                                \
  131.         auditrsrcType = 'audt'
  132.  
  133.  
  134. #define rsrcID                                                                                                    \
  135.     integer                                                /* ID of a rsrc which must exist in system */            \
  136.         macPlusPatch = 117,                                                                                        \
  137.         macSEPatch = 630,                                                                                        \
  138.         macIIPatch = 376,                                                                                        \
  139.         portablePatch = 890,                                                                                    \
  140.         macIIciPatch = 1660,                                                                                    \
  141.         oldAuroraPatch = 1657
  142.  
  143. #define SrcDiskType                                                                                                    \
  144.     integer                                                /* Expected type of src source disk */                    \
  145.         kExpectFloppyDisk     = 0,                                                                                \
  146.         kExpectCDVolume     = 1,                                                                                \
  147.         kExpectFoldersOnVol = 2
  148.  
  149.  
  150. #define RsrcName                                                                                                \
  151.     evenPaddedString
  152.  
  153. /*
  154. § --------------------------------- Packages ---------------------------------*/
  155. #define    packageFlags                                                                                             \
  156.         boolean        doesntShowOnCustom, showsOnCustom;        /* should show up on Custom screen     */                \
  157.         boolean        notRemovable, removable;                /* this package can be removed     */                    \
  158.         boolean        forceRestart, dontForceRestart;            /* should installing this package for a restart? */    \
  159.         fill bit[13]                                        /* Reserved */ 
  160.  
  161. #define    partSpec                                                                                                \
  162.         rsrcType;                                            /* Part Type: inpk, infa, inra… */                 \
  163.         rsrcID                                                /* Part ID */
  164.  
  165.  
  166. type 'inpk' {
  167.         switch {
  168.             case format0:
  169.                 key integer = 0;                            /* Package Format version */
  170.                 packageFlags;                                /* Package Flags */
  171.                 rsrcID;                                        /* icmt ID */
  172.                 unsigned longint;                            /* Package Size */
  173.                 evenPaddedString;                            /* Package Name */
  174.                 unsigned integer = $$CountOf(partsList);    /* Parts List */
  175.                 wide array partsList {
  176.                     partSpec;                                /* Parts Spec */
  177.                 };
  178.     
  179.         };
  180. };
  181.  
  182.  
  183. type 'icmt' {                                                /* Installer comment */
  184.         unsigned hex longint;                                /* Creation Date  */
  185.         unsigned hex longint;                                /* Version */
  186.         rsrcID;                                                /* Icon ID */
  187.         evenPaddedString;                                    /* Comment Text */
  188. };
  189.  
  190.  
  191. type 'inpc' {                                                /* New Custom Item comment */
  192.         switch {
  193.             case format1:
  194.                 key integer = 1;                            /* Custom Item Format version */
  195.                 unsigned hex longint;                        /* Custom Item Date  */
  196.                 unsigned hex longint;                        /* Custom Item Version */
  197.                 unsigned longint;                            /* Custom Item RAM Requirements */
  198.                 rsrcID;                                        /* Custom Item Icon ID */
  199.                 rsrcID;                                        /* Custom Item Description ('TEXT' resource ID ) */
  200.         };
  201. };
  202.  
  203.  
  204. /*
  205. § --------------------------------- File Specs ---------------------------------*/
  206. #define fileSpecID                                                                                                \
  207.         rsrcID
  208.  
  209.  
  210. #define    fileSpecFlags                                                                                            \
  211.         boolean        noSearchForFile, SearchForFile;            /* Search (tgt only) if not found in given path*/    \
  212.         boolean        TypeCrNeedNotMatch, TypeCrMustMatch;    /* Type and creator must match    */                    \
  213.         fill bit[14]                                        /* currently unused    */
  214.  
  215. type    'infs' {                                                        
  216.         OSType;                                                /* File Type    */
  217.         OSType;                                                /* File Creator    */
  218.         unsigned hex longint;                                /* Creation Date*/ 
  219.         fileSpecFlags;                                        /* File Spec Flags */
  220.         evenPaddedString;                                    /* Full Path */
  221. };
  222.  
  223. /*
  224. § --------------------------------- Target File Spec ---------------------------------*/
  225. #define    targetFileSpecFlags                                                                                            \
  226.         boolean        noSearchForFile, SearchForFile;            /* Search by calling the referenced 'insp' resource */    \
  227.         boolean        TypeCrNeedNotMatch, TypeCrMustMatch;    /* Type and creator must match    */                    \
  228.         fill bit[14]                                        /* currently unused    */
  229.  
  230. type 'intf' {                                                        
  231.     switch {
  232.         case format0:
  233.             key integer = 0;            /* Target File Spec. Format version */
  234.             targetFileSpecFlags;        /* Target File Spec. Flags */
  235.             OSType;                        /* Target File Type */
  236.             OSType;                        /* Target File Creator */
  237.             rsrcID;                        /* Search Proc. Rsrc ID */ 
  238.             evenPaddedString;            /* Target File Path */
  239.         
  240.         case format1:
  241.             key integer = 1;            /* Target File Spec. Format version */
  242.             targetFileSpecFlags;        /* Target File Spec. Flags */
  243.             OSType;                        /* Target File Type */
  244.             OSType;                        /* Target File Creator */
  245.             unsigned hex integer;        /* Target File Finder Flags */
  246.             unsigned hex longint;        /* Target File Creation Date of new file */
  247.             unsigned hex longint;        /* Target File Mod. Date of new file */
  248.             rsrcID;                        /* Search Proc. Rsrc ID */ 
  249.             evenPaddedString;            /* Target File Path */
  250.     };
  251. };
  252.  
  253. /*
  254. § --------------------------------- File Atoms ---------------------------------*/
  255. #define    opcodeFlags                                                                                             \
  256.         boolean        dontDeleteWhenRemoving, deleteWhenRemoving;            /* Remove file or rsrc if remove clicked */    \
  257.         boolean        dontDeleteWhenInstalling, deleteWhenInstalling;        /* Delete target before copy    */            \
  258.         boolean        dontCopy, copy;                            /* Copy file or rsrc to destination */                \
  259.         fill bit[3]                                            /* Reserved */
  260.  
  261.  
  262. #define    fileAtomFlags                                                                                            \
  263.         opcodeFlags;                                                                                            \
  264.         fill bit[5];                                                                                             \
  265.         boolean        updateEvenIfNewer, leaveAloneIfNewer;     /* OK for a newer version of this file to exist */    \
  266.         boolean        updateExisting, keepExisting;            /* Keep tgt file if it already exists */            \
  267.         boolean        copyIfNewOrUpdate, copyIfUpdate;        /* Only update if target exists    */                    \
  268.         boolean        noRsrcFork, rsrcFork;                    /* Apply operation to rsrc fork */                    \
  269.         boolean        noDataFork, dataFork                    /* Apply operation to data fork    */
  270.  
  271. #define    fileAtom1Flags                                                                                            \
  272.         opcodeFlags;                                                                                            \
  273.         boolean        dontIgnoreLockedFile, ignoreLockedFile;    /* Do it even if file is locked */                    \
  274.         boolean        dontSetFileLocked, setFileLocked;         /* Set the Target file to be locked or not. */        \
  275.         boolean        useSrcCrDateToCompare, useVersProcToCompare;     /* How we determine if the target is newer. */    \
  276.         boolean        srcNeedExist, srcNeedNotExist;             /* Ignore atom if file does not exist */            \
  277.         boolean        rsrcForkInRsrcFork, rsrcForkInDataFork; /* Determines where to read the rsrc fork from */    \
  278.         boolean        updateEvenIfNewer, leaveAloneIfNewer;     /* OK for a newer version of this file to exist */    \
  279.         boolean        updateExisting, keepExisting;            /* Keep tgt file if it already exists */            \
  280.         boolean        copyIfNewOrUpdate, copyIfUpdate;        /* Only update if target exists    */                    \
  281.         boolean        noRsrcFork, rsrcFork;                    /* Apply operation to rsrc fork */                    \
  282.         boolean        noDataFork, dataFork                    /* Apply operation to data fork    */
  283.  
  284. type 'infa' {
  285.         switch {
  286.             case format0:
  287.                 key integer = 0;                            /* File Atom Format version */
  288.                 fileAtomFlags;                                /* File Atom Flags          */
  289.                 rsrcID;                                        /* tgt file spec ID */
  290.                 rsrcID;                                        /* src file spec ID */
  291.                 unsigned longInt;                            /* File Size */
  292.                 evenPaddedString;                            /* Atom Description     */
  293.                 
  294.             case format1:
  295.                 key integer = 1;                            /* File Atom version */
  296.                 fileAtom1Flags;                                /* File Atom Flags */
  297.                 unsigned longInt;                            /* File Size */
  298.                 unsigned integer;                            /* Finder Attribute Flags */
  299.                 fileSpecID;                                    /* Tgt file spec ID */
  300.                 integer = $$CountOf (Pieces);                /* Number of Source Pieces */
  301.                 wide array Pieces {
  302.                     fileSpecID;                                /* Source File Spec*/
  303.                     unsigned longInt;                        /* Target Data Fork Part Size */
  304.                     unsigned longInt;                        /* Target Rsrc Fork Part Size */
  305.                 };
  306.                 unsigned hex longint;                        /* Source Version Number in BCD format. */
  307.                 rsrcID;                                        /* Version Compare rsrc ID (zero if none) */
  308.                 rsrcID;                                        /* Atom Extender ID */
  309.                 evenPaddedString;                            /* Atom Description */
  310.         };
  311. };
  312.  
  313. /*
  314. § -------------------------------- Resource Atoms ---------------------------------*/
  315. #define    resourceAtomFlags                                                                                        \
  316.         opcodeFlags;                                                                                            \
  317.         fill bit[3];                                        /* Reserved    */                                        \
  318.         boolean        noTgtRequired, tgtRequired;                /* target req or can be created by another inra */    \
  319.         boolean        updateExisting, keepExisting;            /* Keep tgt rsrc if it already exists */            \
  320.         boolean        copyIfNewOrUpdate, copyIfUpdate;        /* Only update if target exists    */                    \
  321.         boolean        dontIgnoreProtection, ignoreProtection;    /* Do it even if rsrc protected */                    \
  322.         boolean        srcNeedExist, srcNeedNotExist;            /* Rsrc need not exist on source */                    \
  323.         boolean        byName, byID;                            /* Use name or id to find rsrc    */                    \
  324.         boolean        nameNeedNotMatch, nameMustMatch            /* name must match*/
  325.  
  326. #define    resourceAtomFlagsFormat1                                                                                        \
  327.         opcodeFlags;                                                                                            \
  328.         fill bit[2];                                        /* Reserved    */                                        \
  329.         boolean        updateEvenIfNewer, leaveAloneIfNewer;     /* OK for a newer version of this rsrsc to exist */    \
  330.         boolean        noTgtRequired, tgtRequired;                /* target req or can be created by another inra */    \
  331.         boolean        updateExisting, keepExisting;            /* Keep tgt rsrc if it already exists */            \
  332.         boolean        copyIfNewOrUpdate, copyIfUpdate;        /* Only update if target exists    */                    \
  333.         boolean        dontIgnoreProtection, ignoreProtection;    /* Do it even if rsrc protected */                    \
  334.         boolean        srcNeedExist, srcNeedNotExist;            /* Rsrc need not exist on source */                    \
  335.         boolean        byName, byID;                            /* Use name or id to find rsrc    */                    \
  336.         boolean        nameNeedNotMatch, nameMustMatch            /* name must match*/
  337.  
  338. type 'inra' {
  339.         switch {
  340.             case format0:
  341.                 key integer = 0;                            /* Resource Atom Format version */
  342.                 resourceAtomFlags;                            /* Resource Atom Flags */
  343.                 rsrcID;                                        /* tgt file spec ID */
  344.                 rsrcID;                                        /* src file spec ID */
  345.                 rsrcType;                                    /* Resource Type */
  346.                 rsrcID;                                        /* Source ID */
  347.                 rsrcID;                                        /* Target ID */
  348.                 unsigned longInt;                            /* Resource Size */
  349.                 evenPaddedString;                            /* Atom Description */
  350.                 evenPaddedString;                            /* Resource Name */
  351.  
  352.             case format1:
  353.                 key integer = 1;                /* Resource Atom Format version */
  354.                 resourceAtomFlagsFormat1;        /* Resource Atom Flags */
  355.                 unsigned longInt;                /* Total Target Size (including owned rsrcs)    */
  356.  
  357.                 fileSpecID;                        /* Target Resource File Spec */
  358.                 rsrcType;                        /* Target Resource Type */
  359.                 rsrcID;                            /* Target Resource ID */
  360.                 unsigned integer;                /* Target Resource Attributes */
  361.                 evenPaddedString;                /* Target Resource Name */
  362.  
  363.                 integer = $$CountOf (Parts);    /* Number of Parts */
  364.                 wide array Parts {
  365.                     fileSpecID;                        /* Source Part File Spec */
  366.                     rsrcType;                        /* Source Part Type    */
  367.                     rsrcID;                            /* Source Part Rsrc ID */
  368.                     unsigned longInt;                /* Target Part Size    */
  369.                     evenPaddedString;                /* Source Part Resource Name */                
  370.                 };
  371.                 unsigned hex longint;            /* Source Version Number in BCD format. */
  372.                 rsrcID;                            /* Version Compare rsrc ID (zero if none) */
  373.                 rsrcID;                            /* Atom Extender ID */
  374.                 evenPaddedString;                /* Atom Description */
  375.         };
  376. };
  377.  
  378.  
  379. type 'inr#' {
  380.         switch {
  381.             case format0:
  382.                 key integer = 0;                /* Resource Atom Format version */
  383.  
  384.                 integer = $$CountOf (inraRsrcs);    /* Number of inraRsrcs */
  385.                 wide array inraRsrcs {
  386.                     integer;                        /* resource ID ( type to be decided)    */
  387.                     resourceAtomFlagsFormat1;        /* Resource Atom Flags */
  388.                     unsigned longInt;                /* Total Target Size (including owned rsrcs)    */
  389.  
  390.                     fileSpecID;                        /* Target Resource File Spec */
  391.                     fileSpecID;                        /* Source File Spec */
  392.                     rsrcType;                        /* Source/Target Resource Type */
  393.                     rsrcID;                            /* Source/Target Resource ID */
  394.                     unsigned integer;                /* Target Resource Attributes */
  395.  
  396.                     unsigned hex longint;            /* Source Version Number in BCD format. */
  397.                     rsrcID;                            /* Version Compare rsrc ID (zero if none) */
  398.                     rsrcID;                            /* Atom Extender ID */
  399.                     unsigned longInt;                /* Target Size of Rsrc */
  400.                 };
  401.         };
  402. };
  403.  
  404.  
  405.  
  406. /*
  407. § --------------------------------- ResMerge Atoms ---------------------------------*/
  408.  
  409. #define    resMergeAtomFlags                                                                                        \
  410.         fill bit[16];
  411.  
  412. type 'inrm' {
  413.         switch {
  414.             case format0:
  415.                 key integer = 0;                            /* ResMerge Atom Format version */
  416.                 resMergeAtomFlags;                            /* ResMerge Atom Flags          */
  417.                 unsigned longInt;                            /* Size of all resources   */
  418.                 rsrcID;                                        /* tgt file spec ID */
  419.                 rsrcID;                                        /* src file spec ID */
  420.                 evenPaddedString;                            /* Atom Description     */
  421.         };
  422. };
  423.  
  424. /*
  425. § --------------------------------- Folder Atoms ---------------------------------*/
  426.  
  427. #define    folderAtomFlags                                                                                        \
  428.         fill bit[16];
  429.  
  430. type 'infm' {
  431.         switch {
  432.             case format0:
  433.                 key integer = 0;                            /* Folder Atom Format version */
  434.                 folderAtomFlags;                            /* Folder Atom Flags          */
  435.                 unsigned longInt;                            /* Size of all files in source folder */
  436.                 rsrcID;                                        /* tgt file spec ID */
  437.                 rsrcID;                                        /* src file spec ID */
  438.                 evenPaddedString;                            /* Atom Description     */
  439.         };
  440. };
  441.  
  442. /*
  443. § --------------------------------- Boot Block Atoms ---------------------------------*/
  444. #define    bootBlockAtomFlags                                                                                        \
  445.         fill bit[14];                                                                                            \
  446.         boolean        dontChangeOnInstall, changeOnInstall;    /* change parameter if we're installing */            \
  447.         boolean        dontChangeOnRemove, changeOnRemove        /* change parameter if we're removing */ 
  448.  
  449. #define    BootBlockUpdateFlags                                                                                    \
  450.         fill bit[7];                                                                                            \
  451.         boolean        replaceBBSysName,                                                                             \
  452.                     saveBBSysName;                                                                                 \
  453.         boolean        replaceBBShellName,                                                                         \
  454.                     saveBBShellName;                                                                            \
  455.         boolean        replaceBBDbg1Name,                                                                             \
  456.                     saveBBDbg1Name;                                                                             \
  457.         boolean        replaceBBDbg2Name,                                                                             \
  458.                     saveBBDbg2Name;                                                                             \
  459.         boolean        replaceBBScreenName,                                                                         \
  460.                     saveBBScreenName;                                                                             \
  461.         boolean        replaceBBHelloName,                                                                         \
  462.                     saveBBHelloName;                                                                             \
  463.         boolean        replaceBBScrapName,                                                                            \
  464.                     saveBBScrapName;                                                                             \
  465.         boolean        replaceBBCntFCBs,                                                                             \
  466.                     maxBBCntFCBs;                                                                                 \
  467.         boolean        replaceBBCntEvts,                                                                             \
  468.                     maxBBCntEvts
  469.  
  470.  
  471. type 'inbb' {
  472.         switch {
  473.             case format0:
  474.                 key integer = 0;                            /* Boot Block Format version */
  475.                 bootBlockAtomFlags;                            /* Boot Block Atom Flags      */
  476.                         
  477.                         /* now case off the type for the boot block value */
  478.                 switch {
  479.                     case bbUpdate:
  480.                         key integer = -1;
  481.                         rsrcID;                                /* The file spec ID for the source of the 'boot' resource */
  482.                         bootBlockUpdateFlags;
  483.                         
  484.                     case bbID:
  485.                         key integer = 1;
  486.                         decimal integer;
  487.                     
  488.                     case bbEntry:
  489.                         key integer = 2;
  490.                         decimal longint;
  491.                         
  492.                     case bbVersion:
  493.                         key integer = 3;
  494.                         decimal integer;
  495.                         
  496.                     case bbPageFlags:
  497.                         key integer = 4;
  498.                         decimal integer;
  499.                         
  500.                     case bbSysName:
  501.                         key integer = 5;
  502.                         evenPaddedString;
  503.                         
  504.                     case bbShellName:
  505.                         key integer = 6;
  506.                         evenPaddedString;
  507.                         
  508.                     case bbDbg1Name:
  509.                         key integer = 7;
  510.                         evenPaddedString;
  511.                         
  512.                     case bbDbg2Name:
  513.                         key integer = 8;
  514.                         evenPaddedString;
  515.                         
  516.                     case bbScreenName:
  517.                         key integer = 9;
  518.                         evenPaddedString;
  519.                         
  520.                     case bbHelloName:
  521.                         key integer = 10;
  522.                         evenPaddedString;
  523.                         
  524.                     case bbScrapName:
  525.                         key integer = 11;
  526.                         evenPaddedString;
  527.                         
  528.                     case bbCntFCBs:
  529.                         key integer = 12;
  530.                         decimal integer;
  531.                         
  532.                     case bbCntEvts:
  533.                         key integer = 13;
  534.                         decimal integer;
  535.                         
  536.                     case bb128KSHeap:
  537.                         key integer = 14;
  538.                         decimal longint;
  539.                         
  540.                     case bb256KSHeap:
  541.                         key integer = 15;
  542.                         decimal longint;
  543.                         
  544.                     case bb512KSHeap:
  545.                         key integer = 16;
  546.                         decimal longint;
  547.                         
  548.                     case bbSysHeapSize:                        /* Note - same as 512 */
  549.                         key integer = 16;
  550.                         decimal longint;
  551.                         
  552.                     case bbSysHeapExtra:
  553.                         key integer = 18;
  554.                         decimal longint;
  555.                         
  556.                     case bbSysHeapFract:
  557.                         key integer = 19;
  558.                         decimal longint;
  559.                 };
  560.                 evenPaddedString;                                /* Boot Block Atom Description */
  561.         };
  562. };
  563.  
  564.  
  565. /*
  566. § --------------------------------- Action Atoms ---------------------------------*/
  567.  
  568. #define    whenToActAAFlags                                                                                    \
  569.         boolean        actAfter,                /* Call this proc after all installations */                    \
  570.                     actBefore;                /* Call this proc before all installations */                    \
  571.         boolean        dontActOnRemove,                                                                         \
  572.                     actOnRemove;            /* Call this proc when doing a remove */                        \
  573.         boolean        dontActOnInstall,                                                                         \
  574.                     actOnInstall            /* Call this proc when doing an Install */
  575.  
  576.  
  577. #define    actionAtomFlagsFormat0                                                                                \
  578.         fill bit[13];                                                                                        \
  579.         whenToActAAFlags
  580.  
  581. #define    actionAtomFlagsFormat1                                                                                \
  582.         fill bit[12];                                                                                         \
  583.         boolean        continueBusyCursors,    /* Allow Installer busy cursor during call (3.3+ Only) */        \
  584.                     suspendBusyCursors;        /* Stop Installer busy cursor before call (3.3+ Only) */        \
  585.         whenToActAAFlags
  586.         
  587. #define    actionAtomFlagsFormat2                                                                                \
  588.         fill bit[12];                                                                                         \
  589.         boolean        continueBusyCursors,    /* Allow Installer busy cursor during call (3.3+ Only) */        \
  590.                     suspendBusyCursors;        /* Stop Installer busy cursor before call (3.3+ Only) */        \
  591.         whenToActAAFlags
  592.  
  593. type 'inaa' {
  594.         switch {
  595.             case format0:
  596.                 key integer = 0;            /* Action Atom Format version */
  597.                 actionAtomFlagsFormat0;        /* Action Atom Flags for Format 0 */
  598.                 partSpec;                    /* Resource type & id for executable resource */
  599.                 longint;                    /* RefCon that's passed to the executable resource */
  600.                 evenPaddedString;            /* Atom Description */
  601.                 
  602.             case format1:
  603.                 key integer = 1;            /* Action Atom Format version.  Use with Installer 3.3 and newer */
  604.                 actionAtomFlagsFormat1;        /* Action Atom Flags for Format 1 */
  605.                 partSpec;                    /* Resource type & id for executable resource */
  606.                 longint;                    /* RefCon that's passed to the executable resource */
  607.                 evenPaddedString;            /* Atom Description */
  608.             
  609.             case format2:
  610.                 key integer = 2;            /* Action Atom Format version.  Use with Installer 4.0 and newer.*/
  611.                 actionAtomFlagsFormat2;        /* Action Atom Flags for Format 2 */
  612.                 partSpec;                    /* Resource type & id for executable resource.  NOTE:  code rsrc has C calling interface. */
  613.                 longint;                    /* RefCon that's passed to the executable resource */
  614.                 unsigned longint;            /* Requested Memory in bytes */
  615.                 evenPaddedString;            /* Atom Description */
  616.         };
  617. };
  618.  
  619.  
  620.  
  621. /*
  622. § --------------------------------- Audit Trail Atoms ---------------------------------*/
  623. type 'inat' {
  624.         switch {
  625.             case format0:
  626.                 key integer = 0;                            /* Version */
  627.                 fileSpecID;                                    /* Target File Spec */
  628.                 OSType;                                        /* Selector */
  629.                 literal longint;                            /* Value */
  630.             };
  631. };
  632.  
  633. /*
  634. § ----------------------------------- Atom Extenders -----------------------------------*/
  635. #define    atomExtenderFlags                                        \
  636.         boolean        dontSendInitMessage, sendInitMessage;        \
  637.         boolean        dontSendBeforeMessage, sendBeforeMessage;    \
  638.         boolean        dontSendAfterMessage, sendAfterMessage;        \
  639.         boolean        dontSendSuccessMessage, sendSuccessMessage;    \
  640.         boolean        dontSendCancelMessage, sendCancelMessage;    \
  641.         boolean        continueBusyCursors, suspendBusyCursors;    \
  642.         fill bit[10];
  643.  
  644. type 'inex' {
  645.         switch {
  646.             case format0:
  647.                 key integer = 0;        /* Extender Format version */
  648.                 atomExtenderFlags;        /* Flags for Format 0 */
  649.                 partSpec;                /* Type & id of code resource */
  650.                 longint;                /* Refcon for parameter block */
  651.                 unsigned longint;        /* Requested Memory in bytes */
  652.                 evenPaddedString;        /* Status Description  */    
  653.         };
  654. };
  655.  
  656.  
  657. /*
  658. § --------------------------------- Installer Rules ---------------------------------*/
  659.  
  660. #define Version                                                                                                    \
  661.     hex byte;                                                /* System file Major revision in BCD*/                \
  662.     hex byte;                                                /* System file Minor revision in BCD*/                \
  663.     hex byte    development = 0x20,                            /* System file Release stage        */                \
  664.                 alpha = 0x40, beta = 0x60,                                                                        \
  665.                 final = 0x80, release = 0x80;                                                                    \
  666.     hex byte                                                /* Non Final */
  667.     
  668.     
  669. /* Note that if the minimal & maximal target disk sizes are both 0, any volume will match */
  670. /* If the Minimal is > 0 and the maximal = 0, then only the minimum requirement is used */
  671. #define TargetVolReqs                                        /* Required Target Volume Description */            \
  672.     decimal longint                                            /* Minimal Target Disk Size */                        \
  673.         floppy = 0,                                                                                                \
  674.         hdFloppy = 1400,                                                                                        \
  675.         hardDisk = 10000;                                                                                        \
  676.     decimal longint                                            /* Maximal Target Disk Size */                        \
  677.         floppy = 900,                                                                                            \
  678.         hdFloppy = 1500,                                                                                        \
  679.         hardDisk = 0
  680.     
  681.     
  682. #define IntegerList                                                                                                \
  683.     unsigned integer = $$CountOf(IntegerArray);                                                                    \
  684.     array IntegerArray {                                                                                        \
  685.         integer;                                                                                                \
  686.     }
  687.  
  688.  
  689. #define LongIntList                                                                                                \
  690.     unsigned integer = $$CountOf(LongIntArray);                                                                    \
  691.     array LongIntArray {                                                                                        \
  692.         longint;                                                                                                \
  693.     }
  694.  
  695.  
  696. #define packageList                                                                                                \
  697.     IntegerList
  698.  
  699.  
  700. #define assertionList                                                                                            \
  701.     IntegerList
  702.     
  703.     
  704. #define gestaltList                                                                                                \
  705.     LongIntList
  706.  
  707.  
  708. #define    alwaysFalseKey                            -2
  709. #define    alwaysTrueKey                            -1
  710. #define    checkGestaltKey                            1
  711. #define checkMinMemoryKey                        2
  712. #define    checkFileDataForkExistsKey                3
  713. #define    checkFileRsrcForkExistsKey                4
  714. #define    checkFileContainsRsrcByIDKey            5
  715. #define    checkFileContainsRsrcByNameKey            6
  716. #define    checkFileVersionKey                        7
  717. #define    checkFileCountryCodeKey                    8
  718. #define    checkTgtVolSizeKey                        9
  719. #define    checkUserFunctionKey                    10
  720. #define    checkAllAssertionsKey                    11
  721. #define    checkAnyAssertionKey                    12
  722. #define checkMoreThanOneAssertionKey            13
  723. #define    addUserDescriptionKey                    14
  724. #define    addPackagesKey                            15
  725. #define    addAssertionKey                            16
  726. #define reportVolErrorKey                        17
  727. #define reportSysErrorKey                        18
  728. #define addAuditRecKey                            19
  729. #define checkAuditRecKey                        20
  730. #define checkAnyAuditRecKey                        21
  731. #define addCustomItemsKey                         22
  732. #define checkAllNonAssertionsKey                23
  733. #define checkAnyNonAssertionKey                    24
  734. #define clearAssertionsKey                        25
  735. #define checkRuleFunctionKey                    26
  736. #define checkGestaltAttributesKey                27
  737.  
  738.  
  739.  
  740. /* The Easy Install Rules */
  741. type 'inrl' {
  742.     switch {
  743.         case format0:
  744.             key integer = 0;
  745.             hex integer = 0;                                            /* Rule Flags for future use */
  746.             unsigned integer = $$CountOf(Rules);
  747.             wide array Rules {
  748.                 switch {
  749.                     case alwaysFalse:
  750.                         key integer = alwaysFalseKey;
  751.                         
  752.                     case alwaysTrue:
  753.                         key integer = alwaysTrueKey;
  754.                         
  755.                     case checkGestalt:
  756.                         key integer = checkGestaltKey;
  757.                         OSType;                                            /* Gestalt selector */
  758.                         gestaltList;                                    /* Legal results */
  759.                     
  760.                     case checkMinMemory:
  761.                         key integer = checkMinMemoryKey;
  762.                         decimal longint;
  763.  
  764.                     case checkFileDataForkExists:
  765.                         key integer = checkFileDataForkExistsKey;
  766.                         fileSpecID;
  767.                         
  768.                     case checkFileRsrcForkExists:
  769.                         key integer = checkFileRsrcForkExistsKey;
  770.                         fileSpecID;
  771.                         
  772.                     case checkFileContainsRsrcByID:
  773.                         key integer = checkFileContainsRsrcByIDKey;
  774.                         fileSpecID;
  775.                         rsrcType;
  776.                         rsrcID;
  777.                         
  778.                     case checkFileContainsRsrcByName:
  779.                         key integer = checkFileContainsRsrcByNameKey;
  780.                         fileSpecID;
  781.                         rsrcType;
  782.                         rsrcName;
  783.                         
  784.                     case checkFileVersion:
  785.                         key integer = checkFileVersionKey;
  786.                         fileSpecID;
  787.                         version;
  788.                         
  789.                     case checkFileCountryCode:
  790.                         key integer = checkFileCountryCodeKey;
  791.                         fileSpecID;
  792.                         integer Region;
  793.                         
  794.                     case checkTgtVolSize:
  795.                         key integer = checkTgtVolSizeKey;
  796.                         targetVolReqs;
  797.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
  798.                     case checkUserFunction:
  799.                         key integer = checkUserFunctionKey;
  800.                         rsrcType;
  801.                         rsrcID;
  802.                         longint;                    /* RefCon that's passed to the executable resource */
  803.                         
  804.                     case checkAllAssertions:
  805.                         key integer = checkAllAssertionsKey;
  806.                         assertionList;
  807.                         
  808.                     case checkAnyAssertion:
  809.                         key integer = checkAnyAssertionKey;
  810.                         assertionList;
  811.                         
  812.                     case checkMoreThanOneAssertion:
  813.                         key integer = checkMoreThanOneAssertionKey;
  814.                         assertionList;
  815.                         
  816.                     case addUserDescription:
  817.                         key integer = addUserDescriptionKey;
  818.                         evenPaddedString;
  819.                         
  820.                     case addPackages:
  821.                         key integer = addPackagesKey;
  822.                         packageList;
  823.                         
  824.                     case addAssertion:
  825.                         key integer = addAssertionKey;
  826.                         assertionList;
  827.                         
  828.                     case reportVolError:
  829.                         key integer = reportVolErrorKey;
  830.                         evenPaddedString;
  831.                         
  832.                     case reportSysError:
  833.                         key integer = reportSysErrorKey;
  834.                         evenPaddedString;
  835.                         
  836.                     case addAuditRec:
  837.                         key integer = addAuditRecKey;
  838.                         fileSpecID;
  839.                         OSType;
  840.                         literal longint;
  841.                         
  842.                     case checkAuditRec:
  843.                         key integer = checkAuditRecKey;
  844.                         fileSpecID;
  845.                         OSType;
  846.                         literal longint;
  847.                         
  848.                     case checkAnyAuditRec:
  849.                         key integer = checkAnyAuditRecKey;
  850.                         fileSpecID;
  851.                         OSType;
  852.                         longIntList;
  853.                         
  854.                     case addCustomItems:
  855.                         key integer = addCustomItemsKey;
  856.                         packageList;
  857.                         
  858.                     case checkAllNonAssertions:
  859.                         key integer = checkAllNonAssertionsKey;
  860.                         assertionList;
  861.                         
  862.                     case checkAnyNonAssertion:
  863.                         key integer = checkAnyNonAssertionKey;
  864.                         assertionList;
  865.                         
  866.                     case clearAssertions:
  867.                         key integer = clearAssertionsKey;
  868.                         assertionList;
  869.                         
  870.                     case checkRuleFunction:
  871.                         key integer = checkRuleFunctionKey;
  872.                         rsrcID;
  873.                     
  874.                     case checkGestaltAttributes:
  875.                         key integer = checkGestaltAttributesKey;
  876.                         OSType;                                            /* Gestalt selector */
  877.                         literal longint;                                /* Bit Mask */
  878.                         
  879.             };
  880.         };
  881.     };
  882. };
  883.  
  884.  
  885. #define RuleList IntegerList
  886.     
  887. #define kEasyInstallFrameworkRsrcID     764
  888. #define kCustomInstallFrameworkRsrcID     766
  889. #define kGlobalFrameworkRsrcID             765
  890.     
  891. /* The rule framework */
  892. type 'infr' {
  893.     switch {
  894.         case format0:
  895.             key integer = 0;                                /* Rule framework version */
  896.             unsigned integer = $$CountOf(RuleArray);
  897.             wide array RuleArray {
  898.                 boolean pickFirst, pickAll;                    /* which packages to select? */                        
  899.                 fill bit[15];
  900.                 ruleList;                                    /* List of rules */                                    
  901.             };
  902.     };
  903. };
  904.  
  905.  
  906. /* The list of disks we may need, and the order we want them to appear in */
  907. /* This is optional. */
  908. type 'indo' {
  909.     switch {
  910.         case format0:
  911.             key integer = 0;                                /* indo version */
  912.             integer = $$Countof(StringArray);
  913.             array StringArray {
  914.                     evenPaddedString;
  915.             };
  916.             
  917.         case format1:
  918.             key integer = 1;                                /* indo version */
  919.             integer = $$Countof(SrcVolArray);
  920.             array SrcVolArray {
  921.                     SrcDiskType;
  922.                     evenPaddedString;
  923.             };
  924.     };
  925. };
  926.  
  927.  
  928. /* This script resource defines the minimum Installer version that is required */
  929. /* to run the script.  If an Installer app is launched that is older than this */
  930. /* required version, the user receives a dialog telling him/her to run a newer Installer */
  931. /* This is optional. */
  932. type 'invs' {
  933.     switch {
  934.         case format0:
  935.             key integer = 0;
  936.             hex byte;                                                /* Major revision in BCD*/
  937.             hex byte;                                                /* Minor vevision in BCD*/
  938.             hex byte    development = 0x20,                            /* Release stage        */
  939.                         alpha = 0x40,
  940.                         beta = 0x60,
  941.                         final = 0x80, /* or */ release = 0x80;
  942.             hex byte;                                                /* Non-final release #    */
  943.             pstring;                                                /* Short version number    */
  944.     };
  945. };
  946.  
  947.  
  948.  
  949. /*
  950. § -------------------------------- Font Atom & Split Atom Stuff ---------------------------------*/
  951.  
  952. #define    Style                                                                                    \
  953.     fill bit[9];                                        /* Reserved */                            \
  954.     Boolean        noExtendedStyle, extendedStyle;            /* Exteneded style */                    \
  955.     Boolean        noCondensedStyle, condensedStyle;        /* Condensed style */                    \
  956.     Boolean        noShadowStyle,     shadowStyle;            /* Shadow style */                        \
  957.     Boolean        noOutlineStyle, outlineStyle;            /* Outline style */                        \
  958.     Boolean        noUnderlineStyle, underlineStyle;        /* Underline style */                    \
  959.     Boolean        noItalicStyle, italicStyle;                /* Italic style */                        \
  960.     Boolean        noBoldStyle, boldStyle;                    /* Bold style */
  961.  
  962. #define    RsrcSpec                                                                                \
  963.         fileSpecID;                                        /* File spec for this resource */        \
  964.         rsrcType;                                        /* Type of the resource    */                \
  965.         rsrcID;                                            /* ID of the resource */                \
  966.         unsigned longInt;                                /* Size in bytes of this resource    */    \
  967.         evenPaddedString                                /* Name of the resource */                
  968.  
  969. #define    SrcPartsList                                    /* The list of pieces */                \
  970.         integer = $$CountOf (Parts);                    /* How many of them? */                    \
  971.         wide array Parts {                                                                        \
  972.             RsrcSpec;                                    /* Description of this piece */            \
  973.         }
  974.  
  975. #define resSysHeap        64                                /* Defines for resource attributes */
  976. #define resPurgeable    32
  977. #define resLocked        16
  978. #define resProtected    8
  979. #define resPreload        4
  980. #define resChanged        2
  981.  
  982. #define Strike                                                                                    \
  983.     integer;                                            /* Font size */                            \
  984.     Style;                                                /* Which styles? */                        \
  985.     RsrcType;                                            /* Target Font Resource Type */            \
  986.     integer;                                            /* Target Attributes */                    \
  987.     SrcPartsList;                                        /* All of the pieces */
  988.  
  989. #define fontFamilyAtomFlags                                                                                        \
  990.         opcodeFlags;                                                                                            \
  991.         fill bit[2];                                        /* Reserved    */                                        \
  992.         boolean        noEncodedFONDRsrc, encodedFONDRsrc;        /* source 'FOND' data is stored as 'iFND' rsrc */    \
  993.         boolean        noTgtRequired, tgtRequired;                /* target req or can be created by another inff */    \
  994.         boolean        updateExisting, keepExisting;            /* Keep tgt rsrc if it already exists */            \
  995.         boolean        copyIfNewOrUpdate, copyIfUpdate;        /* Only update if target exists    */                    \
  996.         boolean        dontIgnoreProtection, ignoreProtection;    /* Do it even if rsrc protected */                    \
  997.         boolean        srcNeedExist, srcNeedNotExist;            /* Rsrc need not exist on source */                    \
  998.         boolean        byName, byID;                            /* Use name or id to find strike rsrc    */            \
  999.         boolean        nameNeedNotMatch, nameMustMatch            /* name must match if finding strike by ID */
  1000.     
  1001. type 'inff' {
  1002.     switch {
  1003.         case format0:
  1004.             key integer = 0;                            /*format version 0 */
  1005.             resourceAtomFlags;                            /* flags */
  1006.             fileSpecID;                                    /* Target File Spec */
  1007.             fileSpecID;                                    /* Source File Spec of the FOND and all pieces, unless overriden by a split definition */
  1008.             unsigned integer;                            /* Target FOND Attributes */
  1009.             unsigned longInt;                            /* size in bytes of the complete family set */
  1010.             rsrcID;                                        /* source FOND's resource ID */
  1011.             switch {
  1012.             case entireFamily:
  1013.                  key integer = 1;
  1014.             case explicitFamilyMembers:
  1015.                 key integer = 2;
  1016.                 unsigned integer = $$CountOf(StrikeEntries);
  1017.                 wide array StrikeEntries {
  1018.                     Strike;                                /* Source for each of the points */
  1019.                 };
  1020.             };
  1021.             evenPaddedString;                            /* Atom Description */
  1022.             evenPaddedString;                            /* the exact family name */
  1023.             
  1024.         case format1:
  1025.             key integer = 1;                            /*format version 1 */
  1026.             resourceAtomFlags;                            /* flags */
  1027.             fileSpecID;                                    /* Target File Spec */
  1028.             fileSpecID;                                    /* Source File Spec of the FOND and all pieces, unless overriden by a split definition */
  1029.             unsigned integer;                            /* Target FOND Attributes */
  1030.             unsigned longInt;                            /* size in bytes of the complete family set */
  1031.             rsrcID;                                        /* source FOND's resource ID */
  1032.             switch {
  1033.             case entireFamily:
  1034.                  key integer = 1;
  1035.             case explicitFamilyMembers:
  1036.                 key integer = 2;
  1037.                 unsigned integer = $$CountOf(StrikeEntries);
  1038.                 wide array StrikeEntries {
  1039.                     Strike;                                /* Source for each of the points */
  1040.                 };
  1041.             };
  1042.             rsrcID;                                        /* Atom Extender ID */
  1043.             evenPaddedString;                            /* Atom Description */
  1044.             evenPaddedString;                            /* the exact family name */
  1045.  
  1046.         case format2:
  1047.             key integer = 2;                            /*format version 2 */
  1048.             fontFamilyAtomFlags;                        /* flags, only difference between format1 and format2*/
  1049.             fileSpecID;                                    /* Target File Spec */
  1050.             fileSpecID;                                    /* Source File Spec of the FOND and all pieces, unless overriden by a split definition */
  1051.             unsigned integer;                            /* Target FOND Attributes */
  1052.             unsigned longInt;                            /* size in bytes of the complete family set */
  1053.             rsrcID;                                        /* source FOND's resource ID */
  1054.             switch {
  1055.             case entireFamily:
  1056.                  key integer = 1;
  1057.             case explicitFamilyMembers:
  1058.                 key integer = 2;
  1059.                 unsigned integer = $$CountOf(StrikeEntries);
  1060.                 wide array StrikeEntries {
  1061.                     Strike;                                /* Source for each of the points */
  1062.                 };
  1063.             };
  1064.             rsrcID;                                        /* Atom Extender ID */
  1065.             evenPaddedString;                            /* Atom Description */
  1066.             evenPaddedString;                            /* the exact family name */
  1067.     };
  1068. };
  1069.  
  1070.  
  1071. /*
  1072. § ----------------------------------- Preference Resource -----------------------------------*/
  1073. #define    preferenceFlags                                                        \
  1074.         boolean        useDiskTargetMode, useFolderTargetMode;                    \
  1075.         boolean        dontAllowUserToSetSystemDisk, allowUserToSetSystemDisk;    \
  1076.         boolean        dontShowSelectedSizeInCustom, showSelectedSizeInCustom;    \
  1077.         boolean        noSetupFunctionSupplied, setupFunctionSupplied;            \
  1078.         boolean        dontAllowCleanInstall, allowCleanInstall;                \
  1079.         boolean        dontAllowServerAsTarget, allowServerAsTarget;            \
  1080.         fill bit[10];
  1081.  
  1082. /*  NOTE:  The 'allowServerAsTarget' flag is an unsupported and untested feature.  Only
  1083. those scriptwriters that absolutley, positively, must allow their users to
  1084. install onto AppleShare server volumes should use the 'allowServerAsTarget' flag!  And if
  1085. you install on an AppleShare volume, never, ever install anything into its System Folder!!
  1086. */
  1087.  
  1088. type 'inpr' {
  1089.         switch {
  1090.             case format0:
  1091.                 key integer = 0;        /* Preference version */
  1092.                 preferenceFlags;        /* Preference Flags */
  1093.                 rsrcType;                /* Type of code resource for Setup Function */
  1094.                 rsrcID;                    /* Id of code resource for Setup Function */
  1095.                 unsigned integer = $$CountOf(helpPagelist);    /* Help page List */
  1096.                 wide array helpPagelist {
  1097.                     rsrcID;                                /* B&W left edge picture */
  1098.                     rsrcID;                                /* B&W main text */
  1099.                     rsrcID;                                /* 8-Bit left edge picture */
  1100.                     rsrcID;                                /* 8-Bit main text */
  1101.                 };
  1102.                 evenPaddedString;        /* Default Folder name, if no Setup Function supplied */    
  1103.         };
  1104. };
  1105.  
  1106.  
  1107.  
  1108.  
  1109. /*
  1110. § ----------------------------------- Search Procedure -----------------------------------*/
  1111. #define    searchProcedureFlags        \
  1112.         fill bit[16];
  1113.  
  1114. type 'insp' {    
  1115.     switch {
  1116.         case format0:
  1117.             key integer = 0;        /* Search Procedure Format version */
  1118.             searchProcedureFlags;    /* Search Procedure Flags */
  1119.             rsrcType;                /* Search Procedure Code Rsrc Type   NOTE:  code rsrc has C calling interface.*/
  1120.             rsrcID;                    /* Search Procedure Code Rsrc ID */
  1121.             longint;                /* RefCon Value */
  1122.             unsigned longint;        /* Requested Memory in bytes */
  1123.             evenPaddedString;        /* Optional Summary String, not shown to user */    
  1124.     };
  1125. };
  1126.  
  1127.  
  1128. /*
  1129. § ----------------------------------- Action Handlers -----------------------------------*/
  1130. #define    actionHandlerFlags        \
  1131.         fill bit[16];
  1132.  
  1133. type 'inah' {
  1134.         switch {
  1135.             case format0:
  1136.                 key integer = 0;        /* Format version */
  1137.                 actionHandlerFlags;        /* Action Handler Flags */
  1138.                 rsrcType;                /* Action Handler Code Rsrc Type   NOTE:  code rsrc has C calling interface.*/
  1139.                 rsrcID;                    /* Action Handler Code Rsrc ID */
  1140.                 unsigned longint;        /* Requested Memory in bytes */
  1141.                 evenPaddedString;        /* Optional Summary String, not shown to user */    
  1142.         };
  1143. };
  1144.  
  1145.  
  1146. /*
  1147. § ----------------------------------- Version Compare -----------------------------------*/
  1148. #define    versionCompareFlags        \
  1149.         fill bit[16];
  1150.  
  1151. type 'invc' {
  1152.         switch {
  1153.             case format0:
  1154.                 key integer = 0;        /* Format version */
  1155.                 versionCompareFlags;    /* Flags for Format 0 */
  1156.                 rsrcType;                /* Version Proc. Code Rsrc Type   NOTE:  code rsrc has C calling interface.*/
  1157.                 rsrcID;                    /* Version Proc. Code Rsrc ID */
  1158.                 unsigned longint;        /* Requested Memory in bytes */
  1159.                 evenPaddedString;        /* Optional Summary String, not shown to user */    
  1160.         };
  1161. };
  1162.  
  1163.  
  1164. /*
  1165. § ----------------------------------- Rule Function -----------------------------------*/
  1166. #define    ruleFunctionFlags        \
  1167.         fill bit[16];
  1168.  
  1169. type 'inrf' {
  1170.         switch {
  1171.             case format0:
  1172.                 key integer = 0;        /* Format version */
  1173.                 ruleFunctionFlags;        /* Flags for Format 0 */
  1174.                 rsrcType;                /* Rule Function Code Rsrc Type   NOTE:  code rsrc has C calling interface.*/
  1175.                 rsrcID;                    /* Rule Function Code Rsrc ID */
  1176.                 longint;                /* RefCon Value */
  1177.                 unsigned longint;        /* Requested Memory in bytes */
  1178.                 evenPaddedString;        /* Optional Summary String, not shown to user */    
  1179.         };
  1180. };
  1181.  
  1182.  
  1183. /*
  1184. § ------------------------------ Script Sub-Heap Size Resource -------------------------------*/
  1185. type 'insz' {
  1186.         switch {
  1187.             case format0:
  1188.                 key integer = 0;        /* Format version */
  1189.                 unsigned longint;        /* Script Sub-Heap Size in bytes */
  1190.         };
  1191. };
  1192.  
  1193.  
  1194.